﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos
Public Class ComplementosBL
    Private Function EsValidoParaRegistrar(ByRef pComplementos As ComplementosBE, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrWhiteSpace(pComplementos.CveComp)) Then
                mensaje &= "El campo clave complemento no puede ir vacio." & vbCrLf
            Else
                pComplementos.CveComp = pComplementos.CveComp.Trim
                If (pComplementos.CveComp.Length > 20) Then
                    pComplementos.CveComp = pComplementos.CveComp.Substring(0, 20)
                End If
            End If

            If (String.IsNullOrEmpty(pComplementos.Activo)) Then
                mensaje &= "El campo status del complemento no puede ir vacio." & vbCrLf
            End If

            If (String.IsNullOrWhiteSpace(pComplementos.RegimenFiscal)) Then
                pComplementos.RegimenFiscal = ""
            End If

            If (Not String.IsNullOrWhiteSpace(pComplementos.CveComp)) AndAlso (pComplementos.CveComp.ToLower = "donat") _
                AndAlso (pComplementos.Activo) AndAlso String.IsNullOrWhiteSpace(pComplementos.RegimenFiscal) Then
                mensaje &= "El campo Régimen Fiscal es obligatorio para la activación del complemento Donatarias." & vbCrLf
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "ComplementosBL.EsValidoParaRegistrar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function ActualizaComplemento(ByVal TokenConexion As String, ByVal Complemento As ComplementosBE,
                                         ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim CompDAL As ComplementosDAL = New ComplementosDAL("")
        Try
            If (EsValidoParaRegistrar(Complemento, detResp.Mensajes)) Then
                CompDAL = New ComplementosDAL(RijndaelSimple.desencriptaDefault(TokenConexion))
                If (CompDAL.actualizaComplemento(Complemento)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Datos de Complementos Actualizados.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de Datos de Complementos." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "ComplementosBL.ActualizaComplementos")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al actualizar Complementos: " & ex.Message)
            Return False
        Finally
            CompDAL = Nothing
        End Try
    End Function

    Public Function GetComplemento(ByVal tokenConexion As String, ByVal clave As String, ByRef detResp As DetalleRespuesta) As ComplementosBE
        detResp.Mensajes = ""
        Dim compDAL As ComplementosDAL = New ComplementosDAL("")
        Dim compBE As ComplementosBE
        Try
            If (EsValidoParaGetComplementos(clave, detResp.Mensajes)) Then
                compDAL = New ComplementosDAL(RijndaelSimple.desencriptaDefault(tokenConexion))
                compBE = compDAL.getComplementos(clave)
                If (compBE IsNot Nothing) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Se obtuvo la información de Complementos con éxito.")
                    Return compBE
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_RegistroInexistenteOInactivo,
                                             "No se obtuvo la información de Complementos" & vbCrLf & detResp.Mensajes)
                    Return Nothing
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La Clave del Complemento contiene valor invalido " & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "ComplementosBL.GetComplementos")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al obtener información de Complementos: " & ex.Message)
            Return Nothing
        Finally
            compDAL = Nothing
            compBE = Nothing
        End Try
    End Function

    Private Function EsValidoParaGetComplementos(ByRef pClave As String, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrEmpty(pClave)) Then
                mensaje &= "El campo Clave del Complemento no puede ir  vacio." & vbCrLf
            End If
            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "ComplementosBL.EsValidoParaGetComplementos")
            mensaje &= ex.Message
            Return False
        End Try
    End Function
End Class
